/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Com.Controller;

import Com.Entity.Koneksi;
import Com.Entity.Pasien;
import Com.Entity.RekamMedis;
import Com.Entity.Tanggal;
import Com.Interface.ObatDialog;
import Com.Interface.PMO_Dialog;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author Ardha
 */
public class MainController {

    private static javax.swing.JDialog jDialog;
    private static RekamMedis rekamMedis;
    public static RekamMedis rm = new RekamMedis();
    public static String kodePenyakit = null, golongan = null, tahapPengobatan = null;
    static int lamaObat = 0;
    static String namaObat = null;
    static int ntfObat;

    public MainController() {
    }

    public static void setRekamMedis(RekamMedis rekamMedis) {
        MainController.rekamMedis = rekamMedis;
    }

    public static RekamMedis getRekamMedis() {
        return MainController.rekamMedis;
    }

    public static void openPMOFrame(javax.swing.JFrame jFrame, JLabel nilaiNama_Label, JLabel nilaiAlamat_Label, JLabel nilaiJenisKelamin_Label,
            JTextField nilaiID, JLabel nilaiSaran_Label, String tahapPengobatan, String noRegLab) {
        MainController.jDialog = jDialog;
        if (MainController.jDialog == null) {
            MainController.jDialog = new PMO_Dialog(jFrame, true, nilaiNama_Label, nilaiAlamat_Label, nilaiJenisKelamin_Label,
                    nilaiID, nilaiSaran_Label, tahapPengobatan, noRegLab);
            MainController.jDialog.setVisible(true);
        } else {
            MainController.jDialog.show();
        }
    }

    public static void cancel(JCheckBox gejala1_CheckBox, JCheckBox gejala2_CheckBox,
            JCheckBox gejala3_CheckBox, JCheckBox gejala4_CheckBox, JCheckBox gejala5_CheckBox,
            JCheckBox gejala6_CheckBox, JCheckBox gejala7_CheckBox, JCheckBox gejala8_CheckBox,
            JCheckBox gejala9_CheckBox, JPanel rekamMedis_Panel, JLabel nilaiNama_Label,
            JLabel nilaiAlamat_Label, JLabel nilaiJenisKelamin_Label, JTextField id_TextField,
            JLabel nilaiJumlahBTA_Label, JLabel nilaiHasilRontgen_Label, JRadioButton rontgenA_radio,
            JRadioButton rontgenB_radio, JRadioButton btaSewaktu1a_radio, JRadioButton btaSewaktu1b_radio,
            JRadioButton btaSewaktu2a_radio, JRadioButton btaSewaktu2b_radio, JRadioButton btaPagi1a_radio,
            JRadioButton btaPagi1b_radio, JLabel nilaiJumlahBTABaru_Label, ButtonGroup grupA, ButtonGroup grupB, ButtonGroup grupC,
            JLabel nilaitglLabel, JLabel nilaiUmurLabel, JLabel nilaiBeratBadanLabel, ButtonGroup grupD, JLabel nilaiPerbaikan_Label) {
        rekamMedis_Panel.setVisible(false);
        gejala1_CheckBox.setSelected(false);
        gejala2_CheckBox.setSelected(false);
        gejala3_CheckBox.setSelected(false);
        gejala4_CheckBox.setSelected(false);
        gejala5_CheckBox.setSelected(false);
        gejala6_CheckBox.setSelected(false);
        gejala7_CheckBox.setSelected(false);
        gejala8_CheckBox.setSelected(false);
        gejala9_CheckBox.setSelected(false);
        rontgenA_radio = new JRadioButton();
        rontgenB_radio = new JRadioButton();
        btaSewaktu1a_radio = new JRadioButton();
        btaSewaktu1b_radio = new JRadioButton();
        btaSewaktu2a_radio = new JRadioButton();
        btaSewaktu2b_radio = new JRadioButton();
        btaPagi1a_radio = new JRadioButton();
        btaPagi1b_radio = new JRadioButton();
        grupA.clearSelection();
        grupB.clearSelection();
        grupC.clearSelection();
        grupD.clearSelection();
        nilaiNama_Label.setText("Nama_Pasien");
        nilaiAlamat_Label.setText("Alamat_Pasien");
        nilaiJenisKelamin_Label.setText("Jenis_Kelamin_Pasien");
        id_TextField.setText("");
        nilaiJumlahBTA_Label.setText("0");
        nilaiHasilRontgen_Label.setText("");
        nilaiJumlahBTABaru_Label.setText("0");
        nilaitglLabel.setText("Tanggal_Lahir_Pasien");
        nilaiUmurLabel.setText("Umur_Pasien");
        nilaiBeratBadanLabel.setText("Berat_Badan_Pasien");
        nilaiPerbaikan_Label.setText("");
    }

    private static void gejalaPasien(JCheckBox gejala1_CheckBox, JCheckBox gejala2_CheckBox,
            JCheckBox gejala3_CheckBox, JCheckBox gejala4_CheckBox, JCheckBox gejala5_CheckBox,
            JCheckBox gejala6_CheckBox, JCheckBox gejala7_CheckBox, JCheckBox gejala8_CheckBox,
            JCheckBox gejala9_CheckBox, JLabel nilaiJumlahBTA_Label, JLabel nilaiHasilRontgen_Label) {
        try {
            gejala1_CheckBox.setSelected(false);
            gejala2_CheckBox.setSelected(false);
            gejala3_CheckBox.setSelected(false);
            gejala4_CheckBox.setSelected(false);
            gejala5_CheckBox.setSelected(false);
            gejala6_CheckBox.setSelected(false);
            gejala7_CheckBox.setSelected(false);
            gejala8_CheckBox.setSelected(false);
            gejala9_CheckBox.setSelected(false);
            LinkedList list = RekamMedis.getKoneksiKontrol().getGejala(Pasien.getPasien());
            Object bta = list.removeFirst();
            Object rongent = list.removeFirst();
            RekamMedis rkmMedis = new RekamMedis();
            rkmMedis.setHasil_Rontgent(Integer.parseInt(rongent.toString()));
            MainController.setRekamMedis(rkmMedis);
            String[] gejala = (String[]) list.removeFirst();
            if (gejala != null) {
                for (int i = 0; i < gejala.length; i++) {
                    if (gejala[i].matches(gejala1_CheckBox.getText())) {
                        gejala1_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala2_CheckBox.getText())) {
                        gejala2_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala3_CheckBox.getText())) {
                        gejala3_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala4_CheckBox.getText())) {
                        gejala4_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala5_CheckBox.getText())) {
                        gejala5_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala6_CheckBox.getText())) {
                        gejala6_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala7_CheckBox.getText())) {
                        gejala7_CheckBox.setSelected(true);
                    } else if (gejala[i].matches(gejala8_CheckBox.getText())) {
                        gejala8_CheckBox.setSelected(true);
                    } else {
                        gejala9_CheckBox.setSelected(true);
                    }
                }
            } else {
                gejala1_CheckBox.setSelected(false);
                gejala2_CheckBox.setSelected(false);
                gejala3_CheckBox.setSelected(false);
                gejala4_CheckBox.setSelected(false);
                gejala5_CheckBox.setSelected(false);
                gejala6_CheckBox.setSelected(false);
                gejala7_CheckBox.setSelected(false);
                gejala8_CheckBox.setSelected(false);
                gejala9_CheckBox.setSelected(false);
            }
        } catch (Exception ex) {
            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void cariDataPasien(JCheckBox gejala1_CheckBox, JCheckBox gejala2_CheckBox,
            JCheckBox gejala3_CheckBox, JCheckBox gejala4_CheckBox, JCheckBox gejala5_CheckBox,
            JCheckBox gejala6_CheckBox, JCheckBox gejala7_CheckBox, JCheckBox gejala8_CheckBox,
            JCheckBox gejala9_CheckBox, JTextField id_TextField, JLabel nilaiNama_Label, JLabel nilaiAlamat_Label,
            JLabel nilaiJenisKelamin_Label, JLabel nilaiTglLahir, JLabel nilaiUmur, JLabel nilaiBeratBadan, JTable rekamMedis_Table, JLabel notifikasi, JPanel rekamMedis_Panel,
            JLabel nilaiJumlahBTA_Label, JLabel nilaiHasilRontgen_Label, JTextField sisaField) {
        try {
            String id = id_TextField.getText();
            Pasien p = Pasien.getKoneksiKontrol().cariDataPasien(id);
            nilaiNama_Label.setText(Pasien.getPasien().getNama());
            nilaiAlamat_Label.setText(Pasien.getPasien().getAlamat());
            nilaiJenisKelamin_Label.setText(String.valueOf(Pasien.getPasien().getJenisKelamin()));
            nilaiTglLahir.setText(String.valueOf(Pasien.getPasien().getTanggalLahir()));
            nilaiUmur.setText(String.valueOf(Pasien.getPasien().getUmur()));
            nilaiBeratBadan.setText(String.valueOf(Pasien.getPasien().getBeratBadan()));

            Statement stmt = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            ResultSet rs;

            String query2 = "SELECT Tahap_priksa FROM rekam_medis WHERE Id_Pasien='" + id.toUpperCase() + "' AND No_Rekam_Medis = (SELECT MAX(No_Rekam_Medis) FROM rekam_medis WHERE Id_Pasien = '" + id.toUpperCase() + "')";
            rs = stmt.executeQuery(query2);
            String tahap = null;
            if (rs.next()) {
                tahap = rs.getString(1);
                System.out.println(tahap);
            }

            int notif = Pasien.getKoneksiKontrol().isiTabelRekamMedis(Pasien.getPasien());
            if (notif == 0) {//jika data tidak ditemukan
                rekamMedis_Panel.setVisible(false);
                notifikasi.setVisible(true);
            } else {
                LinkedList list = RekamMedis.getKoneksiKontrol().getDataRekamMedis(Pasien.getPasien());
                if (list.size() != 0) {
                    String[] kolom = {"No.", "Kode kategori", "Tanggal", "Tipe", "No. regstrasi lab",
                        "Tanggal cek lab", "Jumlahl BTA", "Rontgen", "Berat badan", "Sisa obat"};
                    DefaultTableModel model = new DefaultTableModel();
                    model.setColumnIdentifiers(kolom);
                    int index = 1;
                    while (!list.isEmpty()) {
                        String[] data = new String[10];
                        for (int i = 0; i < 10; i++) {
                            if (i == 0) {
                                data[i] = String.valueOf(index);
                                index++;
                            } else {
                                Object temp = list.remove();
                                if (String.valueOf(temp).toString().trim().matches("null")
                                        || String.valueOf(temp).toString().trim().matches("")) {
                                    temp = " - ";
                                }
                                if (i == 2 || i == 5 && !temp.toString().trim().matches("-")) {
                                    SimpleDateFormat sDF = new SimpleDateFormat("dd-MM-yyyy");
                                    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
                                    Date date = (Date) formatter.parse(String.valueOf(temp));
                                    String tanggal = sDF.format(date);
                                    data[i] = tanggal;
                                } else {
                                    data[i] = String.valueOf(temp);
                                }
                            }
                        }
                        model.addRow(data);
                    }
                    rekamMedis_Table.setModel(model);
                    if (!rekamMedis_Table.getValueAt(0, 2).toString().matches("null")) {
                        System.out.println("[" + rekamMedis_Table.getValueAt(0, 2).toString());
                        rekamMedis_Panel.setVisible(true);
                        notifikasi.setVisible(false);
                        if (rekamMedis_Table.getValueAt(rekamMedis_Table.getRowCount() - 1, 3).toString().equalsIgnoreCase("PENGOBATAN")) {
                            sisaField.setEditable(true);
                        }
                    } else {
                        notifikasi.setVisible(true);
                        rekamMedis_Panel.setVisible(true);// tak gnti true,, mau false
                    }
                    gejalaPasien(gejala1_CheckBox, gejala2_CheckBox, gejala3_CheckBox,
                            gejala4_CheckBox, gejala5_CheckBox, gejala6_CheckBox, gejala7_CheckBox,
                            gejala8_CheckBox, gejala9_CheckBox, nilaiJumlahBTA_Label, nilaiHasilRontgen_Label);
                }
            }
        } catch (Exception ex) {
//            Logger.getLogger(MainController.class.getName()).log(Level.SEVERE, null, ex);
            JOptionPane.showMessageDialog(null, "ID Pasien belum terdaftar di Poli Umum");
        }
    }

    public static void setSaranBaru(JLabel nilaiHasilRontgen_Label, JLabel nilaiSaran_Label,
            JLabel nilaiSaranPerbaikan_Label, JLabel nilaiJumlahBTAlama_Label,
            JLabel nilaiJumlahBTAbaru_Label, JRadioButton rontgenA_radio, JRadioButton rontgenB_radio,
            JRadioButton btaSewaktu1a_radio, JRadioButton btaSewaktu1b_radio, JRadioButton btaSewaktu2a_radio,
            JRadioButton btaSewaktu2b_radio, JRadioButton btaPagi1a_radio, JRadioButton btaPagi1b_radio, JComboBox comboBox_Paru,
            JPanel bta_Panel, JPanel rontgent_Panel,
            JCheckBox gejala1_CheckBox, JCheckBox gejala2_CheckBox,
            JCheckBox gejala3_CheckBox, JCheckBox gejala4_CheckBox, JCheckBox gejala5_CheckBox,
            JCheckBox gejala6_CheckBox, JCheckBox gejala7_CheckBox, JCheckBox gejala8_CheckBox,
            JCheckBox gejala9_CheckBox, JTextField beratBadanText, JTextField nilai_NoRegLab, JTextField sisaField) throws FileNotFoundException, SQLException, IOException {

        LinkedList list = RekamMedis.getKoneksiKontrol().getGejala(Pasien.getPasien());
        Object bta = list.removeFirst();
        Object rongent = list.removeFirst();
        RekamMedis rkmMedis = new RekamMedis();
        if (Integer.parseInt(rongent.toString()) == 0 || rongent == null) {
            nilaiHasilRontgen_Label.setText("Pasien tidak melakukan rontgen");
        } else if (Integer.parseInt(rongent.toString()) == 1) {
            nilaiHasilRontgen_Label.setText("hasil rontgen negatif (-)");
        } else {
            nilaiHasilRontgen_Label.setText("hasil rontgen mendukung TBC (+)");
        }

        String saran = null;

        String q = "SELECT Gejala FROM rekam_medis WHERE No_Rekam_Medis = (SELECT MAX(No_Rekam_Medis) FROM rekam_medis WHERE Id_Pasien = '" + Pasien.getPasien().getId() + "')";
        Statement stmt = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rs, rs2, rs3;

        String queryGetBTALama = "SELECT jumlah_bta from rekam_medis where no_rekam_medis = (SELECT MAX(No_Rekam_Medis) FROM rekam_medis WHERE Id_Pasien = '" + Pasien.getPasien().getId() + "')";
        Statement stmtBTALama = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rsBTALama = stmtBTALama.executeQuery(queryGetBTALama);
        int bta_lama = 0;
        if (rsBTALama.first()) {
            bta_lama = rsBTALama.getInt(1);
        }
        nilaiJumlahBTAlama_Label.setText(String.valueOf(bta_lama));


        int btaBaru = Integer.parseInt(nilaiJumlahBTAbaru_Label.getText());
        int jumBTA = btaBaru + bta_lama;// sakdurung e bta lama + baru
        if (jumBTA > 3) {
            jumBTA = 3;
        }
        int rontgen = 0;

        if (rontgenA_radio.isSelected()) {
            rontgen = 1;
        } else {
            System.out.println(rongent.toString());
            if (rongent == null || rongent.toString().matches("0")) {
                rontgen = 0;
            } else {
                rontgen = MainController.getRekamMedis().getHasil_Rontgent();
            }
            System.out.println("Rontgen: " + rontgen);
        }

        String query2 = "SELECT lower(Tahap_priksa) FROM rekam_medis WHERE No_Rekam_Medis=(SELECT MAX(No_Rekam_Medis) FROM rekam_medis WHERE Id_Pasien='" + Pasien.getPasien().getId().toUpperCase() + "')";
        String query3 = "select Tipe_Pasien from rekam_medis where Id_Pasien='" + Pasien.getPasien().getId().toUpperCase() + "'";
        String query4 = "select gejala from rekam_medis where Id_Pasien='" + Pasien.getPasien().getId().toUpperCase() + "'";

        rs = stmt.executeQuery(query2);
        String tahap = null;
        String tipe = null;
        String gejalaStr = null;
        while (rs.next()) {
            tahap = rs.getString(1);
            System.out.println(tahap);

        }
        rs2 = stmt.executeQuery(query3);
        while (rs2.next()) {
            tipe = rs2.getString(1);
            System.out.println(tipe);
        }

        rs3 = stmt.executeQuery(query4);
        while (rs3.next()) {
            gejalaStr = rs3.getString(1);
            System.out.println(gejalaStr);
        }

        int jumGejalaLama = 0; // ambil gejala terakhir di rekam medis
        if (gejalaStr == null) {
            jumGejalaLama = 0;
        } else {
            StringTokenizer stoken = new StringTokenizer(gejalaStr, ",");
            while (stoken.hasMoreTokens()) {
                System.out.println(stoken.nextToken());
                jumGejalaLama++;
                System.out.println(jumGejalaLama);
            }
        }
        int jumGejalaBaru = 0; //gejala baru
        String gejalaBaru = "";
        if (gejala1_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala1_CheckBox.getText(), gejalaBaru);
        }
        if (gejala2_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala2_CheckBox.getText(), gejalaBaru);
        }
        if (gejala3_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala3_CheckBox.getText(), gejalaBaru);
        }
        if (gejala4_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala4_CheckBox.getText(), gejalaBaru);
        }
        if (gejala5_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala5_CheckBox.getText(), gejalaBaru);
        }
        if (gejala6_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala6_CheckBox.getText(), gejalaBaru);
        }
        if (gejala7_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala7_CheckBox.getText(), gejalaBaru);
        }
        if (gejala8_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala8_CheckBox.getText(), gejalaBaru);
        }
        if (gejala9_CheckBox.isSelected()) {
            jumGejalaBaru++;
            gejalaBaru = addGejala(gejala9_CheckBox.getText(), gejalaBaru);
        }

        rm.setSingleGejala(gejalaBaru);
        System.out.println(gejalaBaru + " " + jumGejalaBaru);

        String queryMax = "SELECT MAX(No_Rekam_Medis) FROM rekam_medis WHERE Id_Pasien='" + Pasien.getPasien().getId().toUpperCase() + "'";
        Statement stmtM = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rsM = stmtM.executeQuery(queryMax);

        GregorianCalendar g_cal = new GregorianCalendar();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        if (beratBadanText.getText().toString().matches("")
                || beratBadanText.getText().toString().matches("null")
                || beratBadanText.getText().toString().trim().toUpperCase().equalsIgnoreCase("KG")) {
            JOptionPane.showMessageDialog(null, "Masukan Berat Badan Salah\n"
                    + "Berat badan hanya berupa angka");
        } else {
            rm.setBerat_Badan(Float.parseFloat(beratBadanText.getText().toString()));
        }
        int idM = 0;
        if (rsM.first()) {
            idM = rsM.getInt(1);
            System.out.println("idM: " + idM);
        }
        if (tahap == null && tipe.equalsIgnoreCase("baru")) {
            query2 = "UPDATE rekam_medis SET Gejala='" + gejalaBaru + "', Tahap_priksa='MULAI', Tipe_pasien='BARU',Tanggal_Periksa='" + sdf.format(g_cal.getTime()) + "',Berat_Badan='" + Float.parseFloat(beratBadanText.getText()) + "' WHERE No_Rekam_Medis='" + idM + "'";
            stmt.executeUpdate(query2);
            saran = "priksa dahak SPS/BTA";
            nilaiSaran_Label.setText(saran);
            System.out.println("akakakkaka");
            if (sisaField.getText().isEmpty()) {
                rm.setSisa_Obat(0);
            } else {
                rm.setSisa_Obat(Integer.parseInt(sisaField.getText()));
            }

            bta_Panel.setVisible(false); //sak drg e true
            rontgent_Panel.setVisible(false);
        } else if (tipe.equalsIgnoreCase("BUKAN TBC")) {
            idM = idM + 1;
            query2 = "insert into rekam_medis(id_pasien, gejala, tahap_priksa, tipe_pasien,tanggal_periksa, berat_badan, no_rekam_medis) values('" + Pasien.getPasien().getId().toUpperCase() + "','" + gejalaBaru + "', 'MULAI', 'BARU','" + sdf.format(g_cal.getTime()) + "','" + Float.parseFloat(beratBadanText.getText()) + "','" + idM + "')";
//            System.out.println(query2);
            stmt.executeUpdate(query2);
            saran = "priksa dahak SPS/BTA";
            nilaiSaran_Label.setText(saran);
            System.out.println("akakakkaka");
            if (sisaField.getText().isEmpty()) {
                rm.setSisa_Obat(0);
            } else {
                rm.setSisa_Obat(Integer.parseInt(sisaField.getText()));
            }

            bta_Panel.setVisible(false); //sak drg e true
            rontgent_Panel.setVisible(false);
        } else {
            rm.setTanggal_Periksa(sdf.format(g_cal.getTime()));
            if (tipe.equalsIgnoreCase("baru")) {
                if (sisaField.getText().isEmpty()) {
                    rm.setSisa_Obat(0);
                } else {
                    rm.setSisa_Obat(Integer.parseInt(sisaField.getText()));
                }
                if (tahap.equalsIgnoreCase("mulai")) { //merupakan tahap priksa SPS pertama, yg tampil gejala, rm, input BTA
                    bta_Panel.setVisible(true);
                    rontgent_Panel.setVisible(false);
                    rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));

                    rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());

                    rm.setJumlah_bta(jumBTA);

                    if (jumBTA == 0) {
                        saran = "beri antibiotik, cek lagi"; //simpan jumlah bta, tahap = antibiotik
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap("ANTIBIOTIK");
                        rm.setKode_Kategori("K0");
                        rm.setTipe_Pasien(tipe);
                        rm.setKode_Penyakit(null);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    } else if (jumBTA == 1) {
                        System.out.println("baru tidak ada golongan");
                        saran = "ulangi priksa dahak SPS"; //simpan bta, tahap=ulang sps
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setTahap("ULANG SPS");
                        rm.setTipe_Pasien(tipe);
                        rm.setKode_Penyakit(null);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    } else if (jumBTA > 1) {
                        saran = "Tuberkulosis Paru BTA Positif, kategori 1"; //simpan bta, positif
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Penyakit("KP-TB-01");
                        rm.setTipe_Pasien("PENGOBATAN");
                        rm.setTahap("INTENSIF");
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Kategori("K1");
                        tahapPengobatan = "INTENSIF";
                    }
                } else if (tahap.equalsIgnoreCase("antibiotik")) { //merupakan tahap setelah pemberian antibiotik, yg tampil input gejala, rm
                    bta_Panel.setVisible(false);
                    rontgent_Panel.setVisible(false);
                    rm.setTanggal_Periksa_Lab(null);
                    rm.setNo_Reg_Labvarchar(null);
                    rm.setJumlah_bta(jumBTA);
                    if (jumGejalaLama > jumGejalaBaru) {
                        saran = "bukan TBC, penyakit lain";
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setTahap("BUKAN TBC");
                        rm.setTipe_Pasien("BUKAN TBC");
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Penyakit("KP-TB-03");
                    } else {
                        saran = "ulangi priksa dahak SPS"; //simpan gejala, tahap=ulang sps
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setTahap("ULANG SPS");
                        rm.setTipe_Pasien(tipe);
                        rm.setKode_Penyakit(null);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    }
                } else if (tahap.equalsIgnoreCase("ulang sps")) { // merupakan tahap SPS yang ke 2/ulangan, gejala, rm, bta
                    bta_Panel.setVisible(true);
                    rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));
                    rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());
                    rontgent_Panel.setVisible(false);
                    rm.setJumlah_bta(jumBTA);
                    if (btaBaru == 0) {
                        saran = "priksa rontgen dada"; //simpan bta, tahap = rontgen
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setTahap("RONTGEN");
                        rm.setTipe_Pasien(tipe);
                        rm.setKode_Penyakit(null);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    } else {
                        saran = "Tuberkulosis Paru BTA Positif, kategori 1"; //simpan bta, postif
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap("INTENSIF");
                        rm.setTipe_Pasien("PENGOBATAN");
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Kategori("K1");
                        rm.setKode_Penyakit("KP-TB-01");
                        tahapPengobatan = "INTENSIF";
                    }
                } else if (tahap.equalsIgnoreCase("rontgen")) { //merupakan tahap setelah rontgen
                    bta_Panel.setVisible(false);
                    rontgent_Panel.setVisible(true);
                    rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));
                    rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());
                    rm.setJumlah_bta(jumBTA);
                    rm.setHasil_Rontgent(rontgen);
                    if (jumBTA == 0) {
                        if (rontgen == 0) { //hasil rontgen negatif
                            saran = "bukan TBC, penyakit lain";
                            nilaiSaran_Label.setText(saran);
                            rm.setKode_Kategori("K0");
                            rm.setTahap("BUKAN TBC");
                            rm.setTipe_Pasien("BUKAN TBC");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Penyakit("KP-TB-03");
                        } else if (rontgen == 1 && comboBox_Paru.getSelectedItem().toString().matches("Ekstra Paru Berat/Bukan Ekstra Paru")) {
                            saran = "Tuberkulosis Paru BTA Negatif, kategori 1";//tetep po mlbu kategori 2??
                            nilaiSaran_Label.setText(saran);
                            rm.setTahap("INTENSIF");
                            rm.setTipe_Pasien("PENGOBATAN");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K1");
                            rm.setKode_Penyakit("KP-TB-02");
                            tahapPengobatan = "INTENSIF";
                        } else {
                            saran = "Tuberkulosis Paru BTA Negatif, kategori 3";
                            nilaiSaran_Label.setText(saran);
                            rm.setTahap("INTENSIF");
                            rm.setTipe_Pasien("PENGOBATAN");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K3");
                            rm.setKode_Penyakit("KP-TB-02");
                            tahapPengobatan = "INTENSIF";
                        }
                    } else if (jumBTA == 1) {
                        if (rontgen == 0) {
                            saran = "bukan TBC, penyakit lain";
                            nilaiSaran_Label.setText(saran);
                            rm.setKode_Kategori("K0");
                            rm.setTahap("BUKAN TBC");
                            rm.setTipe_Pasien("BUKAN TBC");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Penyakit("KP-TB-03");
                        } else if (rontgen == 1 && comboBox_Paru.getSelectedItem().toString().matches("Ekstra Paru Berat/Bukan Ekstra Paru")) {
                            saran = "Tuberkulosis Paru BTA Negatif, kategori 1";//tetep po mlbu kategori 2??
                            nilaiSaran_Label.setText(saran);
                            rm.setTahap("INTENSIF");
                            rm.setTipe_Pasien("PENGOBATAN");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K1");
                            rm.setKode_Penyakit("KP-TB-01");
                            tahapPengobatan = "INTENSIF";
                        } else {
                            saran = "Tuberkulosis Paru BTA Negatif, kategori 3";
                            nilaiSaran_Label.setText(saran);
                            rm.setTahap("INTENSIF");
                            rm.setKode_Penyakit("KP-TB-02");
                            rm.setTipe_Pasien("PENGOBATAN");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K3");
                            tahapPengobatan = "INTENSIF";
                        }
                    } else {
                        saran = "Tuberkulosis Paru BTA Positif, kategori 1";
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap("INTENSIF");
                        rm.setTipe_Pasien("PENGOBATAN");
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Kategori("K1");
                        rm.setKode_Penyakit("KP-TB-01");
                        tahapPengobatan = "INTENSIF";
                    }
                }
            } else if (tipe.equalsIgnoreCase("pengobatan") || tipe.equalsIgnoreCase("gagal")) { //pasien sudah positif tbc, datang setelah pengobatan
                sisaField.setEditable(true);
                bta_Panel.setVisible(true);
                rm.setTanggal_Periksa(sdf.format(g_cal.getTime()));
                rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));
                rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());
                if (sisaField.getText().isEmpty()) {
                    rm.setSisa_Obat(0);
                } else {
                    rm.setSisa_Obat(Integer.parseInt(sisaField.getText()));
                }
                rontgent_Panel.setVisible(false);

                String queryTanggalPeriksa = "select Kode_Penyakit, Kode_Kategori from rekam_medis where Id_Pasien='" + Pasien.getPasien().getId().toUpperCase() + "'";
                Statement stmtTgl = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
                ResultSet rsTgl = stmtTgl.executeQuery(queryTanggalPeriksa);
                String kodeP = null;
                String kodeK = null;
                while (rsTgl.next()) {
                    kodeP = rsTgl.getString(1);
                    kodeK = rsTgl.getString(2);
                }
                rm.setKode_Penyakit(kodeP);
                rm.setJumlah_bta(jumBTA);
                rm.setHasil_Rontgent(Integer.parseInt(rongent.toString()));

                if (rm.getSisa_Obat() > 0) {
                    saran = "Penderita berobat tidak teratur, harus ditangani dengan kategori II (PASIEN GAGAL)";
                    tahap = "INTENSIF";
                    tahapPengobatan = "INTENSIF";
                    rm.setKode_Kategori("K2");
                    tipe = "GAGAL";
                    nilaiSaran_Label.setText(saran);
                    rm.setTahap(tahap);
                    rm.setTipe_Pasien(tipe);
                    rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    bta_Panel.setVisible(false);
                } else {

                    if (btaBaru > 0) { //klo bta msih ada yg positif masuk ke sisipan

                        if (kodeK.equalsIgnoreCase("K1")) {
                            if (tahap.equalsIgnoreCase("SISIPAN")) {
                                saran = "LANJUTAN";
                                tahap = "LANJUTAN";
                                tahapPengobatan = "LANJUTAN";
                                rm.setKode_Kategori("K1");
                                tipe = "PENGOBATAN";
                            } else {
                                saran = "SISIPAN";
                                tahap = "SISIPAN";
                                tahapPengobatan = "SISIPAN";
                                rm.setKode_Kategori("K12");
                                tipe = "PENGOBATAN";
                            }
                        } else if (kodeK.equalsIgnoreCase("K2")) {
                            if (tahap.equalsIgnoreCase("SISIPAN")) {
                                saran = "LANJUTAN";
                                tahap = "LANJUTAN";
                                tahapPengobatan = "LANJUTAN";
                                rm.setKode_Kategori("K1");
                                tipe = "PENGOBATAN";
                            } else {
                                saran = "SISIPAN";
                                tahap = "SISIPAN";
                                tahapPengobatan = "SISIPAN";
                                rm.setKode_Kategori("K12");
                                tipe = "PENGOBATAN";
                            }
                        } else if (kodeK.equalsIgnoreCase("K3")) {
                            saran = "Kemungkinan:\n1. Mungkin terjadi suatu kekeliruan pada pemeriksaan pertama\n2. Penderita berobat tidak teratur";
                            tahap = "INTENSIF";
                            tahapPengobatan = "INTENSIF";
                            rm.setKode_Kategori("K2");
                            tipe = "GAGAL";
                        } else if (kodeK.equalsIgnoreCase("K12")) {
                            saran = "LANJUTAN";
                            tahap = "LANJUTAN";
                            tahapPengobatan = "LANJUTAN";
                            rm.setKode_Kategori("K1");
                            tipe = "PENGOBATAN";
                        }
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap(tahap);
                        rm.setTipe_Pasien(tipe);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    } else { // klo dh 0 masuk lanjutan
                        if (tahap.equalsIgnoreCase("INTENSIF")) {
                            saran = "LANJUTAN";
                            tahap = "LANJUTAN";
                            tahapPengobatan = "LANJUTAN";
                            if (kodeK.equalsIgnoreCase("K1")) {
                                rm.setKode_Kategori("K1");
                            } else if (kodeK.equalsIgnoreCase("K2")) {
                                rm.setKode_Kategori("K2");
                            } else {
                                rm.setKode_Kategori("K3");
                            }
                            tipe = "PENGOBATAN";
                            rm.setTipe_Pasien(tipe);
                            rm.setTahap(tahap);
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            nilaiSaran_Label.setText(saran);
                        } else if (tahap.equalsIgnoreCase("LANJUTAN")) {
                            saran = "Beri Antibiotik";
                            tahap = "SEMBUH";
                            tahapPengobatan = "ANTIBIOTIK";
                            rm.setKode_Kategori("K0");
                            tipe = "SEMBUH";
                            rm.setTipe_Pasien(tipe);
                            rm.setTahap(tahap);
                            rm.setKode_Penyakit(null);
                            gejalaBaru = null;
                            rm.setSingleGejala(gejalaBaru);
                            rm.setJumlah_bta(0);
                            rm.setHasil_Rontgent(0);
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            nilaiSaran_Label.setText(saran);
                        }
                    }
                }
            } else { //untuk pasien kambuh, gagal dll
                //masukkan gejala dlu, trs simpan, tahap=mulai
//                System.out.println("ASEM");
                if (tipe.equalsIgnoreCase("SEMBUH")) {
                    tipe = "KAMBUH";
                }
                if (!tahap.equalsIgnoreCase("mulai")) {
                    tahap = "MULAI";
                }
                if (sisaField.getText().isEmpty()) {
                    rm.setSisa_Obat(0);
                } else {
                    rm.setSisa_Obat(Integer.parseInt(sisaField.getText()));
                }
                if (tahap.equalsIgnoreCase("mulai")) {
                    bta_Panel.setVisible(true);
                    rontgent_Panel.setVisible(false);
                    rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));
                    rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());
                    rm.setJumlah_bta(jumBTA);
                    if (btaBaru == 0) {
                        saran = "beri antibiotik, cek lagi";
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap("ANTIBIOTIK");
                        rm.setTipe_Pasien(tipe);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Kategori("K0");
                        rm.setKode_Penyakit(null);
                    } else if (btaBaru == 1) {
                        saran = "ulangi priksa dahak SPS";
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setKode_Penyakit(null);
                        rm.setTahap("ULANG SPS");
                        rm.setTipe_Pasien(tipe);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    } else if (btaBaru > 1) {
                        saran = "Tuberkulosis Paru BTA Positif, kategori 2";
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap("INTENSIF");
                        rm.setTipe_Pasien("PENGOBATAN");
                        tahapPengobatan = "INTENSIF";
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Kategori("K2");
                        rm.setKode_Penyakit("KP-TB-01");
                    }
                } else if (tahap.equalsIgnoreCase("antibiotik")) { //merupakan tahap setelah pemberian antibiotik
                    bta_Panel.setVisible(false);
                    rontgent_Panel.setVisible(false);
                    rm.setTanggal_Periksa_Lab(null);
                    rm.setNo_Reg_Labvarchar(null);
                    rm.setJumlah_bta(jumBTA);
                    if (jumGejalaLama > jumGejalaBaru) {
                        saran = "bukan TBC, penyakit lain";
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setTahap("BUKAN TBC");
                        rm.setTipe_Pasien("BUKAN TBC");
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Penyakit("KP-TB-03");
                    } else {
                        saran = "ulangi priksa dahak SPS"; //simpan gejala, tahap=ulang sps
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setKode_Penyakit(null);
                        rm.setTahap("ULANG SPS");
                        rm.setTipe_Pasien(tipe);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    }
                } else if (tahap.equalsIgnoreCase("ulang sps")) {
                    bta_Panel.setVisible(true);
                    rontgent_Panel.setVisible(false);
                    rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));
                    rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());
                    rm.setJumlah_bta(jumBTA);
                    if (jumBTA < 2) {
                        saran = "priksa rontgen dada";
                        nilaiSaran_Label.setText(saran);
                        rm.setKode_Kategori("K0");
                        rm.setKode_Penyakit(null);
                        rm.setTahap("RONTGEN");
                        rm.setTipe_Pasien(tipe);
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                    } else {
                        saran = "Tuberkulosis Paru BTA Positif, kategori 2";
                        nilaiSaran_Label.setText(saran);
                        rm.setTahap("INTENSIF");
                        rm.setTipe_Pasien("PENGOBATAN");
                        tahapPengobatan = "INTENSIF";
                        rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                        rm.setKode_Kategori("K2");
                        rm.setKode_Penyakit("KP-TB-01");
                    }
                } else if (tahap.equalsIgnoreCase("rontgen")) {
                    bta_Panel.setVisible(false);
                    rontgent_Panel.setVisible(true);
                    rm.setTanggal_Periksa_Lab(sdf.format(g_cal.getTime()));
                    rm.setNo_Reg_Labvarchar(nilai_NoRegLab.getText().toUpperCase());
                    rm.setHasil_Rontgent(rontgen);
                    if (jumBTA == 0) {
                        if (rontgen == 0) {
                            saran = "bukan TBC, penyakit lain";
                            nilaiSaran_Label.setText(saran);
                            rm.setKode_Kategori("K0");
                            rm.setTahap("BUKAN TBC");
                            rm.setTipe_Pasien("BUKAN TBC");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Penyakit("KP-TB-03");
                        } else if (rontgen == 1 && comboBox_Paru.getSelectedItem().toString().matches("Ekstra Paru Berat/Bukan Ekstra Paru")) {
                            System.out.println(comboBox_Paru.getSelectedItem().toString());
                            saran = "Tuberkulosis Paru BTA Negatif, kategori 2";//tetep po mlbu kategori 2??
                            nilaiSaran_Label.setText(saran);
                            rm.setTahap("INTENSIF");
                            rm.setTipe_Pasien("PENGOBATAN");
                            tahapPengobatan = "INTENSIF";
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K2");
                            rm.setKode_Penyakit("KP-TB-02");
                        } else {
                            saran = "Tuberkulosis Paru BTA Negatif, kategori 3";
                            nilaiSaran_Label.setText(saran);
                            tipe = "pengobatan";
                            rm.setTahap("INTENSIF");
                            tahapPengobatan = "INTENSIF";
                            rm.setTipe_Pasien("PENGOBATAN");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K3");
                            rm.setKode_Penyakit("KP-TB-02");
                        }
                    } else if (jumBTA == 1) {
                        if (rontgen == 0) {
                            saran = "bukan TBC, penyakit lain";
                            nilaiSaran_Label.setText(saran);
                            rm.setKode_Kategori("K0");
                            rm.setTahap("BUKAN TBC");
                            rm.setTipe_Pasien("BUKAN TBC");
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Penyakit("KP-TB-03");
                        } else {
                            saran = "Tuberkulosis Paru BTA Positif, kategori 2";
                            nilaiSaran_Label.setText(saran);
                            rm.setTahap("INTENSIF");
                            rm.setTipe_Pasien("PENGOBATAN");
                            tahapPengobatan = "INTENSIF";
                            rm.setId_Pasien(Pasien.getPasien().getId().toUpperCase());
                            rm.setKode_Kategori("K1");
                            rm.setKode_Penyakit("KP-TB-01");
                        }
                    }
                }
            }
        }

        System.out.println("Tipe: " + tipe + ";Tahap selanjutnya: " + tahap + ";Saran: " + saran);

    }

    public static void insertRekamMedis(JTextField noRegLabText) throws FileNotFoundException, IOException, SQLException {
        rm.setNo_Reg_Labvarchar(noRegLabText.getText().toString());
        if (rm.getId_Pasien() != null) {
            int no_Rekam_Medis = rm.getNo_Rekam_Medis();
            String id_Pasien = rm.getId_Pasien();
            String kode_kategori = rm.getKode_Kategori();
            String kode_Penyakit = rm.getKode_Penyakit();
            String tipe_Pasien = rm.getTipe_Pasien();
            String tanggal_Periksa = rm.getTanggal_Periksa();
            String gejala = rm.getSingleGejala();
            String no_Reg_Labvarchar = rm.getNo_Reg_Labvarchar();
            String tanggal_Periksa_Lab = rm.getTanggal_Periksa_Lab();
            int jumlah_bta = rm.getJumlah_bta();
            int hasil_Rontgent = rm.getHasil_Rontgent();
            float berat_Badan = rm.getBerat_Badan();
            int sisa_Obat = rm.getSisa_Obat();
            String nama_PMO = rm.getNama_PMO();
            String alamat_PMO = rm.getAlamat_PMO();
            String tahap_Priksa = rm.getTahap();
            RekamMedis.getKoneksiKontrol().insertRekamMedis(no_Rekam_Medis,
                    id_Pasien, kode_kategori, kode_Penyakit, tipe_Pasien, tanggal_Periksa,
                    gejala, no_Reg_Labvarchar, tanggal_Periksa_Lab,
                    jumlah_bta, hasil_Rontgent, berat_Badan, sisa_Obat, nama_PMO, alamat_PMO, tahap_Priksa);
        }
    }

    public static void insertRekamMedis(String namaPMO, String alamatPMO, String noRegLabText) throws FileNotFoundException, IOException, SQLException {
        rm.setAlamat_PMO(alamatPMO);
        rm.setNama_PMO(namaPMO);
        rm.setNo_Reg_Labvarchar(noRegLabText);
        if (rm.getId_Pasien() != null) {
            int no_Rekam_Medis = rm.getNo_Rekam_Medis();
            String id_Pasien = rm.getId_Pasien();
            String kode_kategori = rm.getKode_Kategori();
            String kode_Penyakit = rm.getKode_Penyakit();
            String tipe_Pasien = rm.getTipe_Pasien();
            String tanggal_Periksa = rm.getTanggal_Periksa();
            String gejala = rm.getSingleGejala();
            String no_Reg_Labvarchar = rm.getNo_Reg_Labvarchar();
            String tanggal_Periksa_Lab = rm.getTanggal_Periksa_Lab();
            int jumlah_bta = rm.getJumlah_bta();
            int hasil_Rontgent = rm.getHasil_Rontgent();
            float berat_Badan = rm.getBerat_Badan();
            int sisa_Obat = rm.getSisa_Obat();
            String nama_PMO = rm.getNama_PMO();
            String alamat_PMO = rm.getAlamat_PMO();
            String tahap_Priksa = rm.getTahap();
            RekamMedis.getKoneksiKontrol().insertRekamMedis(no_Rekam_Medis,
                    id_Pasien, kode_kategori, kode_Penyakit, tipe_Pasien, tanggal_Periksa,
                    gejala, no_Reg_Labvarchar, tanggal_Periksa_Lab,
                    jumlah_bta, hasil_Rontgent, berat_Badan, sisa_Obat, nama_PMO, alamat_PMO, tahap_Priksa);
        }
    }

    public static String cekValue(String nilai) {
        if (nilai == null || nilai.matches("'null'")) {
            return null;
        } else {
            return "'" + nilai + "'";
        }
    }

    public static void optionBTAFull(JLabel nilaiJumlahBTABaruLabel, JRadioButton radioButton1a, JRadioButton radioButton1b, JRadioButton radioButton2a, JRadioButton radioButton2b,
            JRadioButton radioButton3a, JRadioButton radioButton3b) {
        if (radioButton1a.isSelected() && radioButton2a.isSelected() && radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(3));
        } else if (!radioButton1a.isSelected() && radioButton2a.isSelected() && radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(2));
        } else if (radioButton1a.isSelected() && !radioButton2a.isSelected() && radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(2));
        } else if (radioButton1a.isSelected() && radioButton2a.isSelected() && !radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(2));
        } else if (!radioButton1a.isSelected() && !radioButton2a.isSelected() && radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(1));
        } else if (radioButton1a.isSelected() && !radioButton2a.isSelected() && !radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(1));
        } else if (!radioButton1a.isSelected() && radioButton2a.isSelected() && radioButton3a.isSelected()) {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(1));
        } else {
            nilaiJumlahBTABaruLabel.setText(String.valueOf(0));
        }
    }

    public static void cetakPrintOut(JLabel nilaiNama_Label, JLabel nilaiAlamat_Label, JLabel nilaiJenisKelamin_Label,
            JTextField nilaiID_Label, String nilaiNamaPMO, String nilaiAlamatPMO, JLabel nilaiSaran_Label) throws SQLException, FileNotFoundException, IOException {
        String kategori = null;
        String namaObat1 = null;
        int lama = 0;
        System.out.println("[]" + nilaiID_Label.getText());
        System.out.println("[]" + tahapPengobatan + "[]");
        String query = "SELECT Kode_Kategori FROM rekam_medis "
                + "WHERE No_Rekam_Medis = (SELECT MAX(No_Rekam_Medis) "
                + "FROM rekam_medis  WHERE UPPER(Id_Pasien)='" + nilaiID_Label.getText() + "') ";
        Statement stmt = Koneksi.getDBConnection().createStatement();
        ResultSet rs = stmt.executeQuery(query);
        String chekcer = "K0";
        if (rs.first()) {
            chekcer = rs.getString(1);
        }
        if (!chekcer.equalsIgnoreCase("K0")) {
            ntfObat = 1;
            new ObatDialog(null, true, nilaiID_Label).setVisible(true);
            if (ntfObat == 1) {
                System.out.println("tahap pengobatan: " + tahapPengobatan);
                long jumlahHari = 0, counterList = 0;
                int jumlahObat1 = 0;
                Calendar c1 = Calendar.getInstance();
                Date a1 = c1.getTime();
                long longa1 = a1.getTime();
                List dateList = new ArrayList();

                if (chekcer.matches("K1")) {
                    kategori = "1";
                    namaObat1 = namaObat;
                    if (tahapPengobatan.equalsIgnoreCase("INTENSIF")) {
                        System.out.println(tahapPengobatan);
                        System.out.println(jumlahObat1);
                        c1.add(Calendar.MONTH, lamaObat);
                        Date a2 = c1.getTime();
                        long longa2 = a2.getTime();
                        jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                        jumlahObat1 = getTanggalObat(jumlahHari, dateList, "INTENSIF");
                    } else if (tahapPengobatan.equalsIgnoreCase("LANJUTAN")) {
                        System.out.println(tahapPengobatan);
                        System.out.println(jumlahObat1);
                        c1.add(Calendar.MONTH, lamaObat);
                        Date a2 = c1.getTime();
                        long longa2 = a2.getTime();
                        jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                        jumlahObat1 = getTanggalObat(jumlahHari, dateList, "LANJUTAN");
                    }

                } else if (chekcer.matches("K2")) {
                    kategori = "2";
                    namaObat1 = namaObat;
                    if (tahapPengobatan.equalsIgnoreCase("INTENSIF")) {
                        c1.add(Calendar.MONTH, lamaObat);
                        Date a2 = c1.getTime();
                        long longa2 = a2.getTime();
                        jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                        jumlahObat1 = getTanggalObat(jumlahHari, dateList, "INTENSIF");
                    } else if (tahapPengobatan.equalsIgnoreCase("LANJUTAN")) {
                        System.out.println(tahapPengobatan);
                        System.out.println(jumlahObat1);
                        c1.add(Calendar.MONTH, lamaObat);
                        Date a2 = c1.getTime();
                        long longa2 = a2.getTime();
                        jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                        jumlahObat1 = getTanggalObat(jumlahHari, dateList, "LANJUTAN");
                    }

                } else if (chekcer.matches("K3")) {
                    kategori = "3";
                    namaObat1 = namaObat;
                    if (tahapPengobatan.equalsIgnoreCase("INTENSIF")) {
                        System.out.println(tahapPengobatan);
                        System.out.println(jumlahObat1);
                        c1.add(Calendar.MONTH, lamaObat);
                        Date a2 = c1.getTime();
                        long longa2 = a2.getTime();
                        jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                        jumlahObat1 = getTanggalObat(jumlahHari, dateList, "INTENSIF");
                    } else if (tahapPengobatan.equalsIgnoreCase("LANJUTAN")) {
                        System.out.println(tahapPengobatan);
                        System.out.println(jumlahObat1);
                        c1.add(Calendar.MONTH, lamaObat);
                        Date a2 = c1.getTime();
                        long longa2 = a2.getTime();
                        jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                        jumlahObat1 = getTanggalObat(jumlahHari, dateList, "LANJUTAN");
                    }

                } else if (chekcer.equalsIgnoreCase("K12")) {
                    kategori = "12";
                    namaObat1 = namaObat;
                    c1.add(Calendar.MONTH, lamaObat);
                    Date a2 = c1.getTime();
                    long longa2 = a2.getTime();
                    jumlahHari = (longa2 - longa1) / (24 * 60 * 60 * 1000);
                    jumlahObat1 = getTanggalObat(jumlahHari, dateList, "SISIPAN");
                }

                int dateArr[] = new int[3];
                int counter = 0;

                try {
                    String reportSource = "./report/report_print_out.jasper";
                    Map<String, Object> params = new HashMap<String, Object>();
                    params.put("id_pasien", nilaiID_Label.getText());
                    params.put("nama_pasien", nilaiNama_Label.getText());
                    params.put("alamat_pasien", nilaiAlamat_Label.getText());
                    params.put("jk_pasien", nilaiJenisKelamin_Label.getText());
                    params.put("nama_pmo", nilaiNamaPMO);
                    params.put("alamat_pmo", nilaiAlamatPMO);
                    params.put("kategori", kategori);
                    params.put("Nama_Obat_1", namaObat1);
                    params.put("parameter1", dateList.toString());
                    params.put("jumlah_Obat_1", jumlahObat1);
                    Map prs = new HashMap();
                    JasperPrint jasperPrint = JasperFillManager.fillReport("./report/report_print_out.jasper", params, new JRBeanCollectionDataSource(dateList));

                    JasperViewer.viewReport(jasperPrint, false);
                } catch (JRException ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            } else {
                JOptionPane.showMessageDialog(null, "Silahkan mengulangi mengisi data pasien"
                        + "\nuntuk meminimalisasi kesalahan input atau pembatalan");
            }
        }
    }

    private static int getTanggalObat(long jumlahHari, List dateList, String tahap) {
        int counterList = 0;
        GregorianCalendar date = new GregorianCalendar();
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        if (tahap.toUpperCase().matches("INTENSIF") || tahap.toUpperCase().matches("SISIPAN")) {
            for (int i = 0; i <= jumlahHari; i++) {
                Tanggal tanggal = new Tanggal();
                if (i >= 24) {
                    date.setTimeInMillis(date.getTimeInMillis() + i * 24 * 60 * 60 * 1000);
                    i = 0;
                    jumlahHari = jumlahHari - 25;
                }
                tanggal.setDate(sdf.format(date.getTimeInMillis() + i * 24 * 60 * 60 * 1000).toString());
                dateList.add(tanggal);
                counterList++;
            }
            return counterList;
        } else {
            int jObat = 0;
            for (int i = 0; i < jumlahHari; i++) {
                Tanggal tanggal = new Tanggal();
                Calendar cal = Calendar.getInstance();
                if (i <= 6) {
                    if (i == 0) {
                        cal.add(Calendar.DAY_OF_MONTH, counterList);
                        tanggal.setDate(sdf.format(cal.getTime()));
                        dateList.add(tanggal);
                        jObat++;
                    } else if (i == 3) {
                        cal.add(Calendar.DAY_OF_MONTH, counterList);
                        tanggal.setDate(sdf.format(cal.getTime()));
                        dateList.add(tanggal);
                        jObat++;
                    } else if (i == 6) {
                        cal.add(Calendar.DAY_OF_MONTH, counterList);
                        tanggal.setDate(sdf.format(cal.getTime()));
                        dateList.add(tanggal);
                        jObat++;
                        i = -1;
                        jumlahHari = jumlahHari - 7;
                    }
                }
                counterList++;
            }
            return jObat;
        }
    }

    public static void insertToDatabase() throws FileNotFoundException, IOException, SQLException {
        Statement stmt = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
    }

    public static void simpanClicked(JLabel nilaiSaran_Label, javax.swing.JFrame frame, JLabel nilaiNama_Label, JLabel nilaiAlamat_Label, JLabel nilaiJenisKelamin_Label, JTextField id_TextField, String regLabText) {
        System.out.println(nilaiSaran_Label.getText());

        if (nilaiSaran_Label.getText().equalsIgnoreCase("Tuberkulosis Paru BTA Negatif, kategori 1")
                || nilaiSaran_Label.getText().equalsIgnoreCase("Tuberkulosis Paru BTA Positif, kategori 2")
                || nilaiSaran_Label.getText().equalsIgnoreCase("Tuberkulosis Paru BTA Negatif, kategori 3")
                || nilaiSaran_Label.getText().equalsIgnoreCase("Tuberkulosis Paru BTA Positif, kategori 1")) {
            openPMOFrame(frame, nilaiNama_Label, nilaiAlamat_Label, nilaiJenisKelamin_Label, id_TextField, nilaiSaran_Label, tahapPengobatan, regLabText);
        } else {
            JOptionPane.showMessageDialog(frame, "Data rekam medis pasien telah berhasil disimpan");
        }


    }

    private static String addGejala(String gejala, String dump) {
        if (dump.matches("") || dump.isEmpty() || dump == null) {
            dump = gejala;
        } else {
            dump = dump.concat(", ").concat(gejala);
        }
        return dump;
    }

    public static List getPMO() throws SQLException, FileNotFoundException, IOException {
        String queryMax = "SELECT MAX(No_Rekam_Medis) FROM rekam_medis WHERE Id_Pasien='" + Pasien.getPasien().getId().toUpperCase() + "'";
        Statement stmtM = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rsM = stmtM.executeQuery(queryMax);
        int noRkmMdis = 0;
        if (rsM.first()) {
            noRkmMdis = rsM.getInt(1);
            System.out.println("idM: " + noRkmMdis);
        }

        String queryPMO = "Select Nama_PMO,Alamat_PMO from rekam_medis WHERE No_Rekam_Medis ='" + noRkmMdis + "' and Id_Pasien='" + Pasien.getPasien().getId() + "'";
        Statement stmtPMO = Koneksi.getDBConnection().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
        ResultSet rsetPMO = stmtPMO.executeQuery(queryPMO);
        List PMO = new ArrayList();
        while (rsetPMO.next()) {
            if (rsetPMO.getString(1) != null || rsetPMO.getString(2) != null) {
                PMO.add(rsetPMO.getString(1));
                PMO.add(rsetPMO.getString(2));
            }
        }
        return PMO;

    }

    public static void setCobaCobi(String a, int b) {
        lamaObat = b;
        namaObat = a;
    }

    public static void setNtfObat(int ntfObat) {
        MainController.ntfObat = ntfObat;
    }
}
